package com.polaris.live.resp.back_resp

/**
 * UserTaskListV2Resp
 *
 * @author Created by 天晴 on 2024/10/28 13:48
 * @since 1.0.0
 **/
data class UserTaskListV2Resp(
    val activeTask: ActiveTaskVo,
    val agencyTasks: AgencyTaskVo,
    val dailyTask: DailyTaskVo,
    /**
     * 说明，里面根据explainType查找
     */
    val rewardExplains: Map<String, UserTaskExplain>,
    val userTasks: UserDailyTaskVo,
)

/**
 * ActiveTaskVo，活跃任务
 */
data class ActiveTaskVo(
    /**
     * 到期时间
     */
    val expiredTime: String? = null,

    /**
     * 活跃奖励
     */
    val tasks: List<ActiveTask>,

    /**
     * 当日活跃总值
     */
    val total: Long,

    /**
     * 当日活跃值
     */
    val value: Long,

    /**
     * 周活跃奖励
     */
    val weekTasks: List<ActiveTask>,

    /**
     * 周活跃总值
     */
    val weekTotal: Long,

    /**
     * 周活跃值
     */
    val weekValue: Long,
)

/**
 * ActiveTask
 */
data class ActiveTask(
    /**
     * 已完成图标
     */
    val completedIcon: String,

    /**
     * 进行中图标
     */
    val processingIcon: String,

    /**
     * 已领取图标
     */
    val receivedIcon: String,

    /**
     * 奖励列表
     */
    val rewards: List<UserReward>,

    /**
     * 奖励文本
     */
    val rewardText: String,

    /**
     * 奖励标题
     */
    val rewardTitle: String,

    /**
     * 任务进行状态
     *
     * 0: 进行中
     * 1: 可领取
     * 2: 已完成
     */
    val status: Long,

    /**
     * 活跃值
     */
    val value: Long,
)

/**
 * UserReward
 */
data class UserReward(
    /**
     * 奖励名称
     */
    val displayText: String,

    /**
     * 奖励的图标
     */
    val icon: String? = null,

    /**
     * 奖励文字
     */
    val text: String,
    /**
     * 是否为锁定状态，只有true才显示
     */
    val locked: Boolean? = null,
)

/**
 * AgencyTaskVo，公会任务
 */
data class AgencyTaskVo(
    /**
     * 任务列表
     */
    val tasks: List<UserTask>,
)

/**
 * UserTask
 */
data class UserTask(
    /**
     * 进度显示类型
     *
     * 0: 单行
     * 1: 进度条
     */
    val progressType: Long,
    /**
     * 任务完成说明
     */
    val explain: String,

    /**
     * 任务名称
     */
    val name: String,

    /**
     * 任务图片
     */
    val photoUrl: String,

    /**
     * 总奖励数量
     */
    val rewardAmount: Long,

    /**
     * 说明类型
     */
    val rewardExplainType: Long,

    /**
     * 奖励图标
     */
    val rewardIconUrl: String,

    /**
     * 任务进度
     */
    val rewards: List<UserProgressReward>,

    /**
     * 需求总值
     */
    val total: Long,

    /**
     * 当前需求进度
     */
    val value: Long,
)

/**
 * UserProgressReward
 */
data class UserProgressReward(
    /**
     * 增加的活跃值，为空不显示
     */
    val activeValue: Long? = null,

    /**
     * 任务名称
     */
    val displayText: String,

    /**
     * 任务完成说明
     */
    val explain: String,

    /**
     * 奖励的图标
     */
    val icon: String? = null,

    /**
     * 奖励说明类型
     */
    val rewardExplainType: Long,

    /**
     * 任务路由，部分没有由客户端实现，如果没有实现则不跳转
     */
    val router: String? = null,

    /**
     * 房间   任务路由，部分没有由客户端实现，如果没有实现则不跳转
     */
    val roomRouter: String? = null,

    /**
     * 任务进行状态
     *
     * 0: 进行中
     * 1: 可领取
     * 2: 已完成
     */
    val status: Long,

    /**
     * 任务id
     */
    val taskId: Long,

    /**
     * 奖励文字
     */
    val text: String,

    /**
     * 当前任务需求
     */
    val total: Long,

    /**
     * 进度的单位，为空则不添加单位
     */
    val unit: String? = null,

    /**
     * 当前进度，本任务的进度
     *
     * 比如总进度是20000，但是当前任务是第二个任务从5000开始，但是这里还是显示0
     */
    val value: Long,
)

/**
 * DailyTaskVo，登录任务
 */
data class DailyTaskVo(
    /**
     * 登录奖励
     */
    val tasks: List<DailyTask>,
)

/**
 * DailyTask
 */
data class DailyTask(
    /**
     * 第几天
     */
    val day: Long,

    /**
     * 奖励列表
     */
    val rewards: List<UserReward>,

    /**
     * 奖励文本
     */
    val rewardText: String,

    /**
     * 奖励标题
     */
    val rewardTitle: String,

    /**
     * 任务进行状态
     */
    val status: Long,
)

/**
 * UserTaskExplain
 */
data class UserTaskExplain(
    /**
     * 内容
     */
    val content: String,

    /**
     * 标题
     */
    val title: String,
)

/**
 * UserDailyTaskVo，用户任务
 */
data class UserDailyTaskVo(
    /**
     * 任务列表
     */
    val tasks: List<UserTask>,
)